package client.zookeeper;

import java.io.Closeable;
import java.util.List;

import org.apache.zookeeper.CreateMode;
import org.apache.zookeeper.data.ACL;

/**
 * redis客户端实现接口
 * @author self
 *
 */
public interface IZookeeperClient extends Closeable{

	interface ZKOutputListener{
		void handle(String data);
	}

	/**
	 * 连接信息
	 * @author self
	 *
	 */
	class ConnectInfo{
		private String connStr;

		public ConnectInfo(String connStr) {
			this.connStr = connStr;
		}

		public String getConnStr() {
			return connStr;
		}
	}

	/**
	 * 获取客户端名称
	 * @return　客户端名称
	 */
	String getName();

	/**
	 * 获取连接信息
	 * @return
	 */
	ConnectInfo getConnectInfo();

	/**
	 * 初始化客户端连接和布局组件
	 */
	boolean init(ZKOutputListener outputListener);

	void create(String path,CreateMode mode);

	void delete(String path);

	List<String> getChildren(String path);

	List<ACL> getACL(String path);

	byte[] getData(String path);

	/**
	 * 执行redis命令
	 * @param cmd　命令
	 * @return　命令结果
	 */
	String exeCmd(String cmd);
}
